
package edu.uoc.tds.pec4.swingx;

import edu.uoc.tds.pec4.common.RemotoInterface;
import edu.uoc.tds.pec4.i18n.GestorIdiomas;
import edu.uoc.tds.pec4.model.Estudiante;
import edu.uoc.tds.pec4.model.ResultadoEstudiante;
import edu.uoc.tds.pec4.model.Usuario;
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JToolBar;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author TdsSoft
 */
public class PantallaEstadisticaEstudiante extends javax.swing.JDialog {
    private static final long serialVersionUID = 1L;
    private Usuario usuario;
    private RemotoInterface remoto;
    private JToolBar jToolBarraHerramientas;
    private JPanel panelTitulo;
    private JLabel labelTitulo;
    private JButton jButtonSalir;
    private JTable tableResultadoEstudiante;
    private DefaultTableModel resultadoEstudianteDatos;
    private JScrollPane scroll;
    
    
    public PantallaEstadisticaEstudiante (PantallaMenuPrincipal parent, boolean modal) throws RemoteException {
        super(parent, modal);
        this.remoto = parent.getRemoto();
        this.usuario = parent.getUsuario();
        initComponents();
        if(usuario.getId_tipo_usuario()==3 ){
            cargaDatos();
        }else{
            JOptionPane.showMessageDialog(null, GestorIdiomas.getMessage("PantallaEstadisticaResultadoEstudiante.ErrorNoEsEstudiante"), GestorIdiomas.getMessage("ShowMessageDialog.Error"), 0);
            this.setVisible(false);
            this.dispose();
        }
    }
    
    private void initComponents(){
        setLayout(null);
        Container contenedor = getContentPane();
        contenedor.setLayout(null);
        contenedor.add(getJToolBarraHerramientas());
        contenedor.add(getPanelTitulo());
        panelTitulo.add(getJLabelTitulo());
        add(getJscrollmedallero());
        pack();
        setSize(825,600);
        setTitle(GestorIdiomas.getMessage("PantallaEstadisticaResultadoEstudiante.Titulo"));
    }
    
    private JPanel getPanelTitulo(){
        panelTitulo = new JPanel();
        panelTitulo.setBounds(30, 50, 745, 50);
        panelTitulo.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
        panelTitulo.setLayout(null);
        return panelTitulo;
    }

    private JToolBar getJToolBarraHerramientas(){
        jToolBarraHerramientas = new JToolBar();
        jToolBarraHerramientas.add(getJButtonSalir());
        jToolBarraHerramientas.setRollover(true);
        jToolBarraHerramientas.setName(GestorIdiomas.getMessage("PantallaEstadisticaResultadoEstudiante.JToolBarraHerramientas")); 
        jToolBarraHerramientas.setRollover(true);
        jToolBarraHerramientas.setBounds(10, 10, 50, 30);
        return jToolBarraHerramientas;
    }
        
    private JButton getJButtonSalir(){
        jButtonSalir = new JButton();
        jButtonSalir.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/Exit.png")));
        jButtonSalir.setFocusable(false);
        jButtonSalir.setBounds(0, 0, 30, 30);
        jButtonSalir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonSalirActionPerformed(evt);
            }
        });
        return jButtonSalir;
    }
        
    private JLabel getJLabelTitulo(){
        labelTitulo = new JLabel(GestorIdiomas.getMessage("PantallaEstadisticaResultadoEstudiante.JlabelTitulo") + usuario.toString(), JLabel.CENTER);
        labelTitulo.setBounds(0, 15, 740, 20);
        labelTitulo.setFont( new Font("Arial",Font.BOLD,18 ));
        labelTitulo.setForeground(Color.BLUE);
        labelTitulo.setHorizontalAlignment(SwingConstants.CENTER);
        return labelTitulo;
    }
        
    private void jButtonSalirActionPerformed(java.awt.event.ActionEvent evt) {                              
        this.setVisible(false);
    }
    
    private JScrollPane getJscrollmedallero(){
         scroll = new JScrollPane();
         scroll.setViewportView(getTableResultadoEstudiante());
         scroll.setBounds(55, 120, 700, 400);
         //30, 50, 550, 50
         return scroll;
    }
    
    private JTable getTableResultadoEstudiante(){
         resultadoEstudianteDatos = new DefaultTableModel();
         tableResultadoEstudiante = new JTable(resultadoEstudianteDatos);
         resultadoEstudianteDatos.addColumn (GestorIdiomas.getMessage("PantallaEstadisticaResultadoEstudiante.Tabla_columna1"));
         resultadoEstudianteDatos.addColumn (GestorIdiomas.getMessage("PantallaEstadisticaResultadoEstudiante.Tabla_columna2"));
         resultadoEstudianteDatos.addColumn (GestorIdiomas.getMessage("PantallaEstadisticaResultadoEstudiante.Tabla_columna3"));
         resultadoEstudianteDatos.addColumn (GestorIdiomas.getMessage("PantallaEstadisticaResultadoEstudiante.Tabla_columna4"));
         resultadoEstudianteDatos.addColumn (GestorIdiomas.getMessage("PantallaEstadisticaResultadoEstudiante.Tabla_columna5"));
         resultadoEstudianteDatos.addColumn (GestorIdiomas.getMessage("PantallaEstadisticaResultadoEstudiante.Tabla_columna6"));
         tableResultadoEstudiante.setEnabled(false); 
         tableResultadoEstudiante.getColumnModel().getColumn(0).setPreferredWidth(200);
         return tableResultadoEstudiante;
    }
    
    private void cargaDatos(){
        List<ResultadoEstudiante> listaResultadoEstudiante = new ArrayList<ResultadoEstudiante>();
        try {
            listaResultadoEstudiante = remoto.obtenerResultadosEstudiante((Estudiante) usuario);
            
            Object[] objetoResultadosEstudiante = new Object[6];
            
            for (int i = 0; i < listaResultadoEstudiante.size(); i++) {
                objetoResultadosEstudiante[0] = listaResultadoEstudiante.get(i).getPrueba();
                objetoResultadosEstudiante[1] = listaResultadoEstudiante.get(i).getTipo();
                objetoResultadosEstudiante[2] = listaResultadoEstudiante.get(i).getNumPregutas();
                objetoResultadosEstudiante[3] = listaResultadoEstudiante.get(i).getPuntuacion();
                objetoResultadosEstudiante[4] = listaResultadoEstudiante.get(i).getClasificacion();
                objetoResultadosEstudiante[5] = listaResultadoEstudiante.get(i).getResultado();
                 resultadoEstudianteDatos.addRow(objetoResultadosEstudiante);
            }
        } catch (RemoteException ex) {
            JOptionPane.showMessageDialog(null, GestorIdiomas.getMessage("PantallaEstadisticaResultadoEstudiante.ErrorObjetoRemoto"), GestorIdiomas.getMessage("ShowMessageDialog.Error"), 0);
        }
    }
}
